package com.briup.corejava.day12;

import com.briup.corejava.day11.pojo.Student;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * set集合测试
 * 1、无序
 * 2、不可存放重复数据
 * 3、没有下标
 * HashSet
 */
public class Test2 {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("tom");
        set.add("jerry");
        set.add("bob");
        set.add("tom");
        // 无序：存取数据顺序不一致
        System.out.println(set);

        // 迭代器
        Iterator<String> iterator = set.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }

        // 遍历，推荐使用增强for循环
        for(String s: set){
            System.out.println(s);
        }

        Set<Student> students = new HashSet<>();
        // HashSet.add方法使用的是HashMap.put方法实现的
        // 其中key代表的就是泛型E的类型 -> Student
        // 再调用Student.equals方法
        students.add(new Student("张三",20));
        students.add(new Student("王武",20));
        students.add(new Student("李四",21));
        students.add(new Student("张三",20));
        System.out.println(students);
        // 结论：hashMap判断唯一性的原则是该类型的equals方法和hashCode方法
        // hashCode不同，则不是同一个对象
        // hashCode相同，继续判断equals
    }
}
